11: Intel Edisonの機体固有IDを使いたい
よく訓練されたアップル信者、都元です。昨日のエントリーはこちらです。今日は軽めのさらっとした話題。
今更ながら、Edisonは超小型の組み込みハードウェアプラットフォームです。で、例えば世界中に配置されたEdisonから、センサーが取得した情報を、AWSクラウドに流し込む、なーんて使い方をしたい場合、各データがどのEdisonから送られてきたものなのか、その識別子が欲しくなります。
/etc/machine-id (NG)
Edisonの中を回遊した際、/etc/machine-idというファイルを見つけました。お、これじゃん、と思って中を見てみると、それっぽい。
# cat /etc/machine-id 1d3d06a1d5464783943fde3af9442797
しかも、みんな別の値が帰ってくるので、コレダと思ったのですが。こいつ、rebootするだけで値が変わってしまいます。なんてこった。どうやらsystemdの機能の一つのようです。
# systemd-machine-id-setup --help systemd-machine-id-setup [OPTIONS...] Initialize /etc/machine-id from a random source. -h --help Show this help --version Show package version --root=ROOT Filesystem root
MACアドレス (OK?)
次にぱっと考えつくのはMACアドレス。これを使っても良いでしょう。MACアドレスは、基本的には重複が無いとされていますが、偽装は可能であり少々の不安は残ります。
ただ、もっと、こう、なんというか、スマートなヤツないんですかね、って思って調べてみたらありました。
/factory/serial_number (OK)
# cat /factory/serial_number FZXXXXXXXXXXXX01
これがハードウェア固有のIDとして使えそうです。もちろんリブートしても変わりませんでしたし、ファームウェアの焼き直し(reboot ota)をしても同じ値が取れました。
もちろんこれも、偽装の可能性はあるのかもしれませんが、「機体固有のID」という、より目的に沿った値であることは確かです。